General-purpose computers play a material role in just about every facet of life in industrialized societies. Computers assume a wide range of roles, from home entertainment center to communications device to business tool to research workhorse to the very engines driving an information-based economy, among many others. However, computers are strange beasts. For what other expensive product aimed at the general public is pretty much useless out-of-the-box and dysfunctional by design?
The problem with general-purpose computers is that they are just that: general purpose. To serve well in any of their very specific roles, a general-purpose computer must be loaded, customized, and configured to achieve the specific purposes of the individual or organization buying the computer. The first of these annoying tasks is done most often by an end-user (who is likely to be afraid of computers, let alone have any expertise in computer configuration) by sequentially installing into the computer a set of soft assets, that is, information and content including computer operating systems, programs, data, and percepta, whether in digital, analog, or other form. The second of these tasks is accomplished by the user entering user-specific data in response to questions and prompts that come up as the software is entered. The third of these tasks is typically taken care of by software, in particular, the associated program installation wizard, as it is installed.
As used herein, “percepta” are soft assets that, by convention, depict qualities, in contrast to “data” representing quantities. Percepta typically represent simple or complex sensory stimuli, of fixed or variable duration. Percepta are generally structured as individually selectable items of self-describing content or organized sets of one or more files. In some embodiments, percepta include digital representations of information, while in other embodiments, analog or other types of representations are used. Examples of percepta include still images (including paintings, drawings, and photographs), motion-picture and sound files depicting cinema and video, e-books, radio programs, music, ring tones, virtual-reality simulations, computer games, and fonts. In some embodiments, percepta may include representations of other senses, including touch, taste, motion, smell, proximity, temperature, and direction.
Several factors make appropriate customization by the end-user inconvenient and problematic. First, end-user choices are unfortunately limited by the characteristics of existing content-distribution channels. Content is obtained by uploading from physical storage, for example, from an optical-storage disk (e.g., a CD, DVD or HD-DVD) that is part of a “shrink-wrap” boxed product, or alternatively, downloading content from a network. Therefore, content choice is highly constrained, for example, by the limited physical shelf space available at a retailer and the related cost and profitability of inventory, or by the magnitude of the aggregate content and the bandwidth capacity of the network connection, if downloading.
Second, such customization is simply time-consuming. To customize a computer, the end-user accumulates content, such as computer programs, for installation in the computer. The installation of each acquired set of content is generally additive to, and independent of, the installation of other content. Thus, the user acquires content, installs content, acquires additional content, installs the additional content, and so on, until the computer attains a desired state of functionality. A fresh new computer can easily amount to a couple of days' drudgery while a user customizes it with even the most basic set of programs and content. Even with special-purpose computers such as MP3 or other audio players, digital personal video recorders, cellular telephones, personal digital assistants (PDAs), digital watches, and the like, the user must acquire content and perhaps acquire programs or other assets to customize the functionality of the user's special-purpose computer and make it personally and professionally useful.
Third, customization by the end-user can destabilize the overall operation of the computer. Over a quarter of all application failures are traceable to installation and configuration problems. Oftentimes, installation of a computer program includes installation of multiple requisite assets, such as fonts and required program elements that may be shared among programs. Such required program elements include code libraries (e.g., sets of software routines). In the Microsoft-Windows family of operating systems, these libraries are called dynamic link libraries or “DLLs”. DLLs are periodically released by their makers in various versions, and these versions may vary in unpredictable and undocumented ways in their behavior. Thus, if installation of a new program installs a new DLL that overwrites and replaces a previous version of the same DLL on which a previously installed program depended, the proper functioning of that previously installed program is jeopardized.
Without careful attention to the preexisting resources on a computer, installation of a new program can cause intermittent instability and malfunction in previously installed programs, conditions that can be nearly impossible to diagnose and remedy. This “flaky” and annoying phenomenon is so common in computers that it has been nicknamed, “DLL Hell.”
Finally, customization of a computer by the end-user can be complicated, confusing, and demanding. Modern operating-system complexity exceeds the technical skills of all but a limited cadre of specially trained and certified individuals. Installation of computer programs calls for the end-user to select from a variety of settings and choices and provide sundry information. Such information can include choosing which components out of a number available are to be installed and selecting an appropriate storage region within the computer in which to install the program. While most installation systems provide guidance to the user in making such decisions, the instructions offered might be obscure or ambiguous, and error codes unintelligible to a layperson.
Frequently, the installation process must pause for the user to indicate a choice. A user is occasionally required to read and affirm a lengthy end-user licensing agreement. Other times, a user might need to separately enter a long, abstract code string, the user's name and address, or other information for validation and activation of every program. In some embodiments, the installation routine will mandate the user to shutdown and restart the computer, adding further delay. Each such action required of the end user represents undue complexity, an inconvenient delay and annoyance, and a potential source of error during the installation process.
The problem with computers is that, once customized for their intended use, they are as unique as are their respective users. While some manufacturers of computers provide some choices for customers, the choices are limited and rudimentary. For example, a manufacturer might give the customer a limited choice of operating system: (i) Microsoft Windows XP Home, (ii) Microsoft Windows XP Professional, or (iii) none. The manufacturer might also give the customer an equally limited choice of office suite software: (i) Microsoft Office Standard, (ii) Microsoft Office Professional, (iii) Microsoft Office Small Business, or (iv) none.
This generalized approach does not give a user access to the actual, specific products that they seek. Nothing currently offered by computer manufacturers even begins to address the necessary level of customization one sees with computers in actual productive use. Despite some offerings to the customer, limited to the lowest common denominator capable of supporting high-volume sales, customization of computers is still largely seen as the unaided responsibility of the purchaser.
Even the limited software routinely added to a new computer constitutes a production bottleneck. Major Electronic Contract Manufacturing (ECM), Electronics Manufacturing Services (EMS), or Original Design Manufacturer (ODM) companies operate facilities throughout the world. At the ECM, hardware assembly, for example of a desktop computer, can take approximately fifteen minutes. Then, with the personal computer running for the entire software-load process, the operating system and other software are loaded, adding another ninety minutes or more to the manufacturing time. Manufacturers typically limit the choices available to select, since a random set of soft assets takes too long to install economically. They then leave it to the user to install and configure any soft assets not available in their limited choices.
Introduction to the Build-to-Order (BTO) Environment
A number of patents describe attempts to improve the customization of software on computers, sometimes referred to as a build-to-order process. Such a process typically uses “additive installation” wherein software packages are successively loaded and/or installed on a disk drive. For example, U.S. Pat. No. 6,080,207 “System and method of creating and delivering software” issued to Kroening, et al. on Jun. 27, 2000, and is incorporated herein by reference. Kroening et al. describe a computerized method for generating a custom software configuration for a hard drive of a computer system according to a desired software configuration defined by a purchasing customer. The system and method utilize an image builder for creating a disk image of the desired software configuration and transferring the image to a storage device. The storage device is connected to an image server that transfers the disk image (e.g., of a baseline software configuration) directly to the hard drive during a manufacturing and assembly process of the computer system. Once the computer system is assembled, the image server broadcasts additional data (e.g., of changes corresponding to the difference between the baseline software configuration and the desired software configuration) to the computer system via a wired or wireless connection.
As another example, U.S. Pat. No. 6,385,766 “Method and apparatus for windows-based installation for installing software on build-to-order computer systems” issued to Doran, Jr., et al., on May 7, 2002, and is incorporated herein by reference. Doran Jr. et al. describe a method for automated installation of software into a computer system including loading an operating system (OS). The OS is provided with a hook for initiating a windows-based install of prescribed software packages during an operating-system setup. At least one prescribed software package and a corresponding windows-based software package installer are loaded onto the computer system. The operating-system setup is then executed. Lastly, the windows-based install of the prescribed software package is initiated in response to the hook, the windows-based install being carried out according to the corresponding software package installer.
Introduction to Install and Uninstall Processes
Other patents describe ways of installing and/or uninstalling software. For example, see U.S. Pat. No. 5,768,566 “Method and facility for uninstalling a computer program package” issued to Harikrishnan, et al. on Jun. 16, 1998, which is incorporated herein by reference. Harikrishnan et al. describe a computer program product having a facility for uninstalling itself. The facility only backs up a minimal set of files that may be affected by an installation of the computer program product. The facility dynamically adapts to different possible installations so as to only store compressed backup copies for the particular installation that is to be used. The facility leverages a number of installation files to determine what files to back up. When a program is uninstalled, the backed-up files are restored in an attempt to return the computer system to a state that existed before the program was installed, such that the backed-up files are again on the system in their original form.
U.S. Pat. No. 6,006,035 “Method and system for custom computer software installation” issued to Nabahi on Dec. 21, 1999 and is incorporated herein by reference. Nabahi describes a method for custom computer-software (additive) installation using a standard rule-based installation engine. Custom installation parameters are translated into a simplified script-language file by a system administrator. A software package is installed onto a client (end user's) computer using the installation engine, which is executed using commands stored in a rule-based instruction file. The rule-based instruction file (script) has been configured by the provider of the application software package, or created according to custom installation parameters by a system administrator, to control software installation by the rule-based installation engine. The script controls a sequence of installation events including (1) a file-copying event wherein files from the software package are copied to the client computer, and (2) an operating-system-modification event wherein operating-system parameters on the client computer are modified to allow execution of the software package.
U.S. Pat. No. 6,026,439 “File transfers using playlists” issued to Chowdhury, et al. on Feb. 15, 2000 and is incorporated herein by reference. Chowdhury, et al. describe a method for transferring data from memory to a file decoder for further processing, for example, a video file is decoded for presentation on a display device. A plurality of control functions are provided for access by a user or a user system in controlling the identity, sequence and flow of file transfers in order to optimize transfer efficiency in a data-transfer transaction.
U.S. Pat. No. 6,442,754 “System, method, and program for checking dependencies of installed software components during installation or uninstallation of software” issued to Curtis on Aug. 27, 2002 and is incorporated herein by reference. Curtis describes a method for installing a program onto a computer having an operating system. Dependency objects indicate a dependent component on which the program to install depends. The program processes the dependency objects before installing the program and determines an operating-system command that is capable of determining whether the dependent component is installed in the computer. The program then executes the operating-system command. An indication is made as to which dependent components have been determined to be not installed. This Curtis patent notes “An installer program is a software program that enables a programmer to write specific code to install a given application program onto the drives of a computer in a way that enables the given application pro ram to work correctly with the computer's environment, including its operating system. There are several types of installers—Java installers and operating system specific installers, e.g., Microsoft Windows installers, and International Business Machines (IBM') OS/2 and AIX operating system installers, etc. . . . A registry is a central repository for all possible information for the computer such as hardware configurations and software settings, etc. The registry maintains information on installed components. A programmer or user can access the registry to determine information about installed products, based upon what the user/programmer placed into the registry or what information is useful to the user . . . . Moreover, each operating system provides different techniques to track installed programs and their dependencies. A dependency indicates a program that another program needs in order support all functions. A depending program is a program that requires the installation of a dependent program to implement all the depending programs features and functions.”
U.S. Pat. No. 6,944,867 entitled “Method for providing a single preloaded software image with an ability to support multiple hardware configurations and multiple types of computer systems” issued to Cheston et al. on Sep. 13, 2005, and is incorporated herein by reference. Cheston et al. describe a hard disk drive of a computer system that is loaded with a preloaded image including an operating system, a number of application programs, and a device-driver installation routine, all of which are not dependent on the hardware configuration of the computer system. A hidden partition of the hard disk drive is also loaded with a number of device drivers, which are dependent upon the hardware configuration. During the first boot only of the preloaded image, the device drivers are installed by the device-driver installation routine.
U.S. patent application Ser. No. 10/264,670 (Publication Number 2003-0110241) “System, method, and computer program product for uninstalling computer software” filed by Cheng, Jr., et al. on Oct. 4, 2002 is incorporated herein by reference. Cheng, Jr., et al. describe a method to update client computers of various end users with software updates for software products installed on the client computers. The system includes a service-provider computer, a number of client computers and software-vendor computers communicating on a network. The service-provider computer stores information in an update database about the software updates of the diverse software vendors, identifying the software products for which updates are available, their location on the network at the various software-vendor computer systems, information for identifying the software products stored in the client computers, and information for determining which products have software updates available. The client computers connect to the service-provider computer and obtain a current version of portions of the database. The client computer determines from the database which products have updates available. User-selected updates are downloaded from the software vendors' computers and installed on the client computer. Payment for the software updates is mediated by the service-provider computer. Authentication of the user ensures only registered users obtain software updates. Authentication of the software updates ensures that the software updates are virus free and uncorrupted. Changes to the client computer during installation are monitored and archived, allowing the updates to be subsequently removed by the user.
The above-described prior art, individually and in combination, fails to provide manufacturers and users with an adequate platform to specify and provide mass-produced customized digital appliances. These patents do not provide ways to quickly, economically, and reliably provide a particular user with installed versions of just those soft assets selected according to the user's desires from a large set of all available soft assets.
What is needed is an enabling technology for fast, scalable, automated dispensing of a customized set of digital software and other content into an information-processing device, in a non-intimidating manner that makes such assets immediately available for use.